package main

import "fmt"

// 这里定义了一个结构体 rect，包含两个整数字段 width 和 height，分别表示矩形的宽度和高度。
type rect struct {
	width, height int
}

/*
这里为结构体 rect 分别定义了两个方法 area 和 perim。area 方法计算矩形的面积，perim 方法计算矩形的周长。
注意 area 方法接收一个指向 rect 结构体的指针作为接收者，而 perim 方法接收一个 rect 结构体的值作为接收者。
所以 area 方法可能会修改结构体的内容，而 perim 方法不会。
*/
//面积
func (r *rect) area() int {
	return r.width * r.height
}

// 周长
func (r rect) perim() int {
	return 2 * (r.width + r.height)
}

func main() {
	r := rect{width: 10, height: 5}
	fmt.Printf("r地址%p\n", &r)

	rp := &r
	fmt.Printf("rp地址%p\n", rp) //注意这里取的是值。而不是地址才能真正取到rp的地址 （指针你就学吧，一学一个不吱声）

	rp2 := r
	fmt.Printf("rp2地址%p\n", &rp2)

	//rp 地址和rp2地址是不一样的因为
	//rp 地址rp := &r 就是r的地址
	//rp2 就是一个简单的结构体拷贝，所以rp2的地址和r是没有关系的

}
